package chapter05

/**
  *
  * @author Pop
  * @date 2022/6/13 21:57
  *
  *      函数至简原则
  */
object Test04_Simplify {

  def main(args: Array[String]): Unit = {

      def f0(name:String):String = {
        return name
      }

      // return可以省略，scala会时运函数体的最后一行作为返回值
      def f1(name:String):String = {
        name
      }

      // 如果函数体只有一行代码，可以省略花括号
      def f2(name:String):String = name

      // 返回值类型如果能够推断出来，那么可以省略，和返回值类型一起省略
      def f3(name:String) = name

      // 如果函数明确申明unit，那么即使函数体使用return 关键字也不起作用
      def f4(name:String):Unit = {
        name
      }

    // 如果Scala期望的是无返回值类型，可以省略等号
      def f6(name:String){
        println(name)
      }


      //如果函数没有参数列表，那么小括号可以省略，调用小括号，可加可不加
      def f7():Unit = {

      }
      f7()
      f7

    //  如果函数没有参数列表，那么小括号可以省略，调用小括号必须省略
      def f8:Unit = {
        println("pop")
      }
//      f8() error
      f8

      // 如果不关心名称，只关系逻辑处理，那么函数名(def)可以省略
      def f9(name:String):Unit = {
        println(name)
      }
    // 可以直接写成 ,匿名函数，lambda 表达式
    (name:String) => {println(name)}
//      ("pop123")
  }
}
